package com.mes.cotask.dao.iface;

import com.mes.cotask.domain.Cotask;
import com.mes.task.domain.OperationTask;

import java.util.List;

import com.mes.common.dao.iface.IBasicDao;

public interface ICotaskDao extends IBasicDao<Cotask> {

	
	/**
	 * 通过传入的taskUid，查找并返回唯一的一个Cotask对象
	 * @param taskUid
	 * @return Cotask
	 * @throws BaseDBException
	 */
	public Cotask findByTaskUid(String taskUid) throws Exception;
	
	/**
	 * 通过给定的工序任务找到历史上同工艺已完成任务的信息
	 * @author Administrator
	 * @param operationTask OperationTask
	 * @return operationTaskList LinkedList
	 * */
	public List<OperationTask> getHistoryTask(OperationTask operationTask) throws Exception;
	
	/**
	 * 通过传入部门编号，获取上个月的历史协作任务
	 * @param deptId
	 * @return List<Cotask>
	 * @throws BaseDBException
	 */
	public List<Cotask> findHistoryCotasksByPrevMonth(String deptId) throws Exception;
	
	/**
	 * 通过获取cotask对象，获取任务的优先级
	 * @param cotask
	 * @return int
	 * @throws BaseDBException
	 */
	public int getPriority(Cotask cotask) throws Exception;
	
	/**
	 * 通过给定的图号和批次号，获取当前第一个为完成的Cotask对象
	 * @param partNumber
	 * @param batchNum
	 * @return	Cotask
	 * @throws BaseDBException
	 * @throws BaseBusinessException
	 */
	public Cotask getFirstUncompleteCotask(String partNumber,String batchNum) throws Exception;
	
	/**
	 * 通过给定的taskUid返回一个Cotask对象
	 * @param taskUid
	 * @return Cotask
	 * @throws BaseDBException
	 * @throws BaseBusinessException
	 */
	@SuppressWarnings("unchecked")
	public Cotask getCotaskByTaskUid(String taskUid) throws Exception;
	
	
}
